package com.ungs.bo.impl;

import java.util.ArrayList;
import java.util.List;

import com.ungs.bo.ProcesoBO;
import com.ungs.dao.ProcesoDAO;
import com.ungs.dao.impl.ProcesoDAOImpl;
import com.ungs.entities.Proceso;
import com.ungs.utils.Constantes;

public class ProcesoBOImpl extends EntidadBOImpl<Proceso> implements ProcesoBO {
	private ProcesoDAO procesoDAO = new ProcesoDAOImpl();

	@SuppressWarnings("unchecked")
	@Override
	public List<Proceso> getAllProceso() {
		List<Proceso> procesoList = (List<Proceso>) getAll(Proceso.class);
		List<Proceso> procesoReturn = new ArrayList<Proceso>();

		logger.info("Obteniendo lista de proceso con alta logica");
		for (Proceso proceso : procesoList) {
			if (proceso.getEstadoLogico().equals(Constantes.ALTA)) {
				procesoReturn.add(proceso);
			}
		}

		return procesoReturn;
	}

	@Override
	public void eliminarProceso(Proceso proceso) {
		logger.info("Baja logica proceso: " + proceso.getId());
		proceso.setEstadoLogico(Constantes.BAJA);
		actualizar(proceso);

	}

	@Override
	public List<Proceso> getProcesosOrdenados(boolean todos) {
		return procesoDAO.getProcesosOrdenados(todos);
	}

	@Override
	public Long getUltimoId() {
		Long idProceso = null;
		Proceso proceso = procesoDAO.getUltimoProceso();

		logger.info("Obteniendo ultimo id de proceso");
		if (proceso != null) {
			idProceso = proceso.getId();
		}

		return idProceso;
	}

	@Override
	public List<Proceso> getProcesoByFilter(String param, boolean todos) {
		return procesoDAO.getProcesoByFilter(param, todos);
	}

}
